package leetcode100;

// TODO 递归 [经典] 【-】 对称二叉树
// TODO https://leetcode.cn/problems/symmetric-tree/solution/dong-hua-yan-shi-101-dui-cheng-er-cha-shu-by-user7/

public class lc100_0101 {

    public boolean isSymmetric(TreeNode root) {
        if(root==null) {
            return true;
        }
        //调用递归函数，比较左节点，右节点
        return dfs(root.left, root.right);
    }

    boolean dfs(TreeNode left, TreeNode right) {
        // 递归终止条件1: 两个节点都为空
        if(left == null && right == null) {
            return true;
        }
        // 递归终止条件2: 两个节点中有一个为空 或 两个节点的值不相等
        if(left == null || right == null || left.val!=right.val) {
            return false;
        }

        // 继续递归
        return dfs(left.left, right.right) && dfs(left.right, right.left);
    }

}